iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Security

《朝 HTB CPTS 前進:資安新手的 30 天實作筆記》系列 第 20 篇

Day 20 — DNS 服務開著,代表什麼?Zone Transfer 實戰

  • 分享至 

  • xImage
  •  

五天的 AD 系列在昨天告一段落啦🎉

今天要來迎接 AI 為我們的 CPTS 學習之旅安排的下一台靶機:Cronos!

其實在我們打 Forest 時,port 53 就出現過了><

但當時主題是 AD,我整個注意力都放在:

「哪些 port 可以幫助我判斷這台是不是加入 AD 的主機?」
「哪些 port 可以讓我辨認它是不是 Domain Controller?」

所以......就這樣忽視了 Port 53 QQ

這次在 Cronos,又遇到它了!!!(這次不能再閃過了吧!xddd)

port 53 代表目標機器有提供 DNS 相關服務, 那它能不能在滲透測試的過程中,成為我們的得力助手呢?

今天就來把這個被我在 Forest 略過的 port 53,好好補回來~~~ xddd


這是今天在 Cronos 機器拿到的 target ip:10.129.227.211

https://ithelp.ithome.com.tw/upload/images/20261004/20184189WQwz5dZIot.png

哇!!!這是我們的第一台medium等級機器耶!!!


還記得拿到 IP 的起手式嗎?

拿到 Cronos 的 IP 了,照我們之前練過的流程走一遍囉~

第一步:確認目標是否在線上

sudo nmap -sN 10.129.227.211

-sN:只確認有沒有人在家,不掃 port。

https://ithelp.ithome.com.tw/upload/images/20261004/201841890nRxwfd1B2.png

看到 Host is up,確認在線上。


第二步:確認主機在線之後,看看裡面有什麼

確認這台機器有回應之後,掃掃 port,看看有哪些門是開著的:

sudo nmap -p- -T4 10.129.227.211 

https://ithelp.ithome.com.tw/upload/images/20261004/20184189FdozFQGGe1.png


第三步:看清楚每個服務是什麼

sudo nmap -sC -sV -p 22,53,80 10.129.227.211
  • -sV:版本偵測——Nmap 會跟每個服務「對話」,問出它是什麼版本
  • -sC:跑預設腳本——Nmap 內建針對特定服務的自動調查問卷

https://ithelp.ithome.com.tw/upload/images/20261004/20184189HgUcfN9QbY.png

怎麼讀這個結果:

欄位 意思
PORT 哪個 port,後面 tcp 是通訊協定
STATE 狀態(open 代表有服務在跑)
SERVICE 大概是什麼類型的服務
VERSION 服務的具體版本號

看到 22(SSH)、53(DNS)、80 port,我會想做什麼

掃完 Nmap,看到三個 port 開著——照 Day 4 的習慣,每個 port 都跑一遍思路:

先想清楚:這是什麼 → 有什麼東西是我感興趣的 → 可以用什麼工具 → 有機會能拿到什麼

Port 22:SSH

這是什麼: 遠端登入服務,可以拿到 shell。

我感興趣的是什麼 有沒有弱密碼、有沒有洩漏的金鑰。

但現在先跳過——SSH 需要帳密或金鑰才能進去,在沒有憑證之前先記下來,等後面拿到帳密再回來試。


Port 53:DNS

這是什麼: DNS 服務——網路世界的電話簿,把網域名稱轉換成 IP 位址。

我感興趣的是什麼

  • 這個網域有哪些子網域?
  • DNS 伺服器有沒有設定不當,可以做 Zone Transfer?
  • Zone Transfer 成功的話,可以拿到整個網域的地圖

Zone Transfer 是什麼?

簡單說——就是「把這台 DNS 伺服器知道的所有資訊一次給我」。
本來是 DNS 伺服器之間同步資料用的——主要 DNS 跟備援 DNS 要保持資料一致,所以主要的會定期把所有記錄同步給備援,這個過程就叫 Zone Transfer。
但如果設定不當——攻擊者也可以跟它要,一次取得這個 Zone 中公開的 DNS 記錄,包含不少子網域與其對應的 IP。原本要慢慢猜子網域,現在直接全部送出來 QQ

可以用什麼工具: dig

有機會拿到什麼: 子網域清單、內部 IP、有哪些服務


Port 80:Web

這是什麼
HTTP 網頁服務,任何人用瀏覽器都能連進來,是機器對外暴露最明顯的攻擊面。

我感興趣的是什麼

  • 這個網站在說什麼、用什麼技術跑的
  • 有沒有輸入點(登入表單、搜尋框、上傳功能)
  • 原始碼有沒有洩漏資訊
  • 有沒有隱藏的目錄或頁面

可以用什麼工具

  • 瀏覽器 + 開發人員工具 — 先手動看
  • robots.txt — 看網頁路徑
  • ffuf / gobuster / dirb — 目錄爆破

有機會拿到什麼
管理頁面、上傳功能、洩漏的帳密或版本資訊、可以執行指令的介面


實作順序:

先找子網域(DNS 列舉)← 今天做的
↓
再對重要的子網域做80 port型的調查 ← 明天做
↓
port 22:先記下來,等拿到帳密再回來

先找子網域,再針對重要子網域猜路徑,提升攻擊成功機率!


看到 53 port (DNS) 的操作順序

步驟 做什麼 為什麼先做
Step 1 找網域名稱跟 DNS 伺服器 知道要查什麼、問誰
Step 2 dig CH TXT version.bind:查 DNS 版本號 說不定版本太舊有漏洞可以利用
Step 3 dig any:查所有記錄類型 快速摸底——看有沒有 MX、TXT 等額外資訊
Step 4 dig axfr:Zone Transfer 設定不當就能一次拿到所有子網域(大獎!)
Step 5 把子網域加進 /etc/hosts 才能用瀏覽器開這些子網域

Step 1 看情況選:

情況 指令 目的
只有 IP,不知道網域名稱 dig -x IP @IP PTR 反向查詢,IP → 網域名稱
知道網域,找 DNS 伺服器 dig ns 網域 @IP 確認誰是 DNS 伺服器

實作開始

Step 1:先問這台機器「你叫什麼名字?」

dig -x 10.129.227.211 @10.129.227.211
  • dig:DNS 查詢工具
  • -x:反向查詢——平常是「名字 → IP」,這裡反過來「IP → 名字」
  • 10.129.227.211:要查詢的 IP(靶機的 IP)
  • @10.129.227.211:直接問這台機器自己(不去問 Google 的 DNS,因為 cronos.htb 是靶機自己管理的假網域,公開 DNS 不知道)

https://ithelp.ithome.com.tw/upload/images/20261004/20184189DTR6rcSkeo.png
https://ithelp.ithome.com.tw/upload/images/20261004/201841895XGMsJVZs7.png
ANSWER SECTION:PTR → ns1.cronos.htb

  • 這台ip的機器名字是 ns1.cronos.htb——
    -- ns1:這台機器的主機名稱
    -- .cronos.htb:它所在的網域

AUTHORITY SECTION:NS → ns1.cronos.htb

  • NS(Name Server)記錄說:「這個 Zone 的 DNS 伺服器是 ns1.cronos.htb」

ADDITIONAL SECTION:A → 10.10.10.13

  • ns1.cronos.htb 的 A 記錄指向 10.10.10.13——。這是 DNS 裡記錄的 IP,但我們現在實際連線的目標還是 Lab 分配給我們的 10.129.227.211。

Step 2:查 DNS 伺服器的版本號

知道 DNS 伺服器是誰之後,順手問問它的版本——說不定版本太舊有漏洞可以利用:

dig CH TXT version.bind 10.129.227.211
  • CH:專門用來查 DNS 伺服器本身的資訊
  • TXT version.bind:問 DNS 伺服器「你是什麼版本?」

https://ithelp.ithome.com.tw/upload/images/20261004/20184189ZVpz6XN9ml.png
https://ithelp.ithome.com.tw/upload/images/20261004/20184189z9Wj1VeNxq.png

REFUSED——這台 DNS 伺服器拒絕回答版本查詢QQ


Step 3:快速摸底——看這個網域有哪些記錄類型

dig any cronos.htb @10.129.227.211
  • any:嘗試一次查詢多種 DNS 記錄,快速看看這個網域目前有哪些資訊可以取得
  • 一次看到 A、NS、MX、TXT、SOA——不用一個一個查
    https://ithelp.ithome.com.tw/upload/images/20261004/20184189vYsZd9SatO.png
    https://ithelp.ithome.com.tw/upload/images/20261004/20184189IglyAtVyGT.png

為什麼在 Zone Transfer (有機會拿到子網域大禮包)前先查 any?

dig any 可以看到一些 Zone Transfer 不一定會給的資訊:

  • MX 記錄:有沒有郵件服務——有的話代表有另一台機器在跑郵件,是新的攻擊目標!搭配 Nmap 看到 port 25(SMTP),兩個互相印證。今天 Cronos 沒有 MX,這條路先跳過 xdd
  • TXT 記錄:什麼都可以放的備註欄——常見的有:
    • SSL 憑證驗證:可以放文字資訊,例如 SPF、DMARC 或其他驗證資訊
    • SPF:說明哪些 IP 可以代表這個網域發信,攻擊者可以知道郵件伺服器在哪、能不能偽造寄件人
    • DMARC:郵件驗證政策,攻擊者可以評估偽造郵件的可行性

接下來做 Zone Transfer ,試著看能不能拿到子網域清單!


Step 4:嘗試 Zone Transfer

知道 DNS 伺服器之後,直接試試看 Zone Transfer:

dig axfr cronos.htb @10.129.227.211
  • dig:DNS 查詢工具
  • axfr:Zone Transfer 的請求——告訴 DNS 伺服器「把整個 Zone 的所有記錄全部給我」
  • cronos.htb:要查詢的目標網域
  • @10.129.227.211:直接問這台機器,不去問 Google(假網域,公開 DNS 不認識)

https://ithelp.ithome.com.tw/upload/images/20261004/20184189FZAjdyWCfd.png

一起看看我們拿到什麼!

cronos.htb.       IN SOA  cronos.htb. admin.cronos.htb. ...  ← 開頭 SOA
cronos.htb.       IN NS   ns1.cronos.htb.                    ← DNS 伺服器
cronos.htb.       IN A    10.10.10.13                        ← 主網域
admin.cronos.htb. IN A    10.10.10.13                        ← 管理介面
ns1.cronos.htb.   IN A    10.10.10.13                        ← DNS 伺服器
www.cronos.htb.   IN A    10.10.10.13                        ← 一般網站
cronos.htb.       IN SOA  cronos.htb. admin.cronos.htb. ...  ← 結尾 SOA

拿到整個 cronos.htb 的地圖!


為什麼 Zone Transfer 會成功?

今天 Zone Transfer 成功了——但為什麼?

代表這台 DNS Server 對我們的 AXFR 請求沒有做足夠的限制。

DNS Server 通常應該透過 allow-transfer 等設定,只允許受信任的 DNS Server 進行 Zone Transfer;如果限制過於寬鬆,就可能讓未授權的人取得整個 Zone。


如果 Zone Transfer 失敗怎麼辦?

今天 Cronos 的 Zone Transfer 成功了,但不是每台機器都這麼好運,如果Zone Transfer 失敗,可以改用 DNSenum (裡面也包含Zone Transfer資訊)

dnsenum --dnsserver 10.129.227.211 --enum -p 0 -s 0 -o subdomains.txt -f /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt cronos.htb
參數 說明
--dnsserver 10.129.227.211 指定用靶機的 DNS 伺服器查——不去問 Google
--enum 完整列舉模式——自動查 NS、MX、嘗試 Zone Transfer、暴力猜子網域
-p 0 不爬 Google 搜尋結果(靶機網域在 Google 查不到)
-s 0 不爬其他網站
-o subdomains.txt 結果存到檔案,方便之後查閱
-f /opt/useful/... 用這個字典檔暴力猜——裡面有 110000 個常見子網域名稱
cronos.htb 目標網域

https://ithelp.ithome.com.tw/upload/images/20261004/20184189Fc4q4BIzZJ.png
https://ithelp.ithome.com.tw/upload/images/20261004/20184189NKoGuzb5gM.png
https://ithelp.ithome.com.tw/upload/images/20261004/20184189nn6JO04jcF.png


Step 5:把子網域加進 /etc/hosts

先把今天找到的子網域都記下來,加進 /etc/hosts,明天我們才能用瀏覽器進 admin.cronos.htb 看看有什麼我們感興趣的東西!

echo "10.129.227.211 cronos.htb www.cronos.htb admin.cronos.htb ns1.cronos.htb" | sudo tee -a /etc/hosts;cat /etc/hosts | grep cronos

echo "10.129.227.211 cronos.htb www.cronos.htb admin.cronos.htb ns1.cronos.htb" :把這串文字輸出出來——「IP + 所有子網域」放在同一行,告訴電腦「這些名字都對應這個 IP」。

| sudo tee -a /etc/hosts

  • |:把剛才 echo 的文字送給下一個指令處理
  • sudo:用 root 權限執行(/etc/hosts 是系統檔案,一般使用者不能改)
  • tee:一邊顯示在螢幕上(讓我們確認加了什麼),一邊寫進檔案
  • -a:append,附加到檔案最後面,不是覆蓋整個檔案

然後確認有沒有成功加進去:

cat /etc/hosts | grep cronos
  • cat /etc/hosts:把 /etc/hosts 的內容全部印出來
  • | grep cronos:只顯示包含「cronos」的那幾行

https://ithelp.ithome.com.tw/upload/images/20261004/20184189Dzx85TR5EQ.png

確認加進去了


判斷哪個子網域最值得深入

拿到子網域清單之後,不是每個都要看——先判斷哪個最有價值:

子網域 為什麼值得看?
admin.cronos.htb 看起來像管理者介面,可能有登入頁面,攻入後拿到的權限可能較高
www.cronos.htb 看起來像一般首頁,跟admin.cronos.htb比可能攻入價值較低
ns1.cronos.htb DNS 伺服器,已經用它做完所有 DNS 查詢了,不是 Web 服務
cronos.htb 看起來像一般首頁,跟admin.cronos.htb比可能攻入價值較低

admin.cronos.htb 最值得深入 : 看起來是管理介面,通常比一般頁面更值得優先調查,可能存在登入功能、管理功能或其他有價值的攻擊面!



回顧一下

今天是我第一次真正開始思考 DNS 到底能幫我們找到什麼資訊!

之前在分析 EDR 告警時,也曾遇過主機連到惡意 DNS 伺服器的alert,但當時比較像在處理告警,沒有真的去理解 DNS 背後的機制 ><

今天第一次碰到 Zone Transfer,才發現 DNS 裡面還有這麼多眉眉角角。

看到 port 53,一路查下去,竟然可以把這個 zone 裡記錄的子網域一次撈出來!

如果 DNS Server 的 Zone Transfer 沒有限制好,攻擊者就可能一次取得大量 DNS 記錄!!!不用自己慢慢猜子網域xddd

以前覺得「DNS 就是查 IP 用的」,現在才知道它其實也可以成為我們做information gathering時的助手~

今天終於把之前在 Forest 略過的 DNS 搞懂了一點點!

明天就來針對今天找到的 admin.cronos.htb,往 Web 方向挖下去~

明天見啦~~~


上一篇
Day 19 — BloodHound:原來 svc-alfresco 可以走到這裡!
系列文
《朝 HTB CPTS 前進:資安新手的 30 天實作筆記》 共 20 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言